home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0045 / mbm_src.exe / MENUDEMO.BAK < prev    next >
Text File  |  1992-03-22  |  11KB  |  291 lines

  1. program menudemo;
  2. {$S-}                {Vollversion 4.1 vom 22.03.1992}
  3.                      {(C) 1990-92 by Software-Entwicklung Uwe Kuhring}
  4.  
  5. uses drv_link,crt,graph,menulib,winlib,mouselib;
  6.  
  7. var b,x,y,t : integer;
  8.     ende    : boolean;
  9.     mychar  : char;
  10.     window  : integer;
  11.     wtmp    : array [1..5] of integer;
  12.     altwy   : integer;
  13.     name    : string;
  14.     tableau : integer;
  15.  
  16. procedure get_mychar(var mychar : char);
  17. begin
  18. if keypressed then mychar:=readkey else begin
  19.    mychar:=chr(255);
  20.    exit;
  21.    end;
  22. if (ord(mychar)=13) or (ord(mychar)=27) then exit
  23. else if ord(mychar)=0 then begin
  24.    if keypressed then mychar:=readkey else begin
  25.       mychar:=chr(255);
  26.       exit;
  27.       end;
  28.    end
  29. else mychar:=chr(255);
  30. end;
  31.  
  32. procedure make_menu_1;
  33. begin                                      {Definition aller Menüeinträge}
  34. menuregister(1,0,'Aktiva');                {des ersten Menüs mit Namen}
  35. menuregister(1,1,'aktivierbar Nr.1');      {'Aktiva'}
  36. menuregister(1,2,'aktivierbar Nr.2');
  37. menuregister(1,3,'aktivierbar Nr.3');
  38. menuregister(1,4,'aktivierbar Nr.4');
  39. menuregister(1,5,'unanwählbar Nr.1'); menumark(1,5,1) ;
  40. menuregister(1,6,'unanwählbar Nr.2'); menumark(1,6,1) ;
  41. menuregister(1,7,'aktivierbar Nr.5');
  42. menuregister(1,16,'ganz abgesetzt');       {Die Einträge 5 und 6 werden als}
  43. end;                                       {unzugänglich gekennzeichnet}
  44.  
  45. procedure make_menu_2;
  46. begin
  47. menuregister(2,0,'Rev_Demo');
  48. menuregister(2,1,'durchrollen 01');
  49. menuregister(2,2,'durchrollen 02');
  50. menuregister(2,3,'durchrollen 03');       {Hier wird das Menü Nr. 2 mit dem}
  51. menuregister(2,4,'durchrollen 04');       {Namen Rev_Demo erstellt.}
  52. menuregister(2,5,'durchrollen 05');       {Die Erstellung wäre in einer}
  53. menuregister(2,6,'durchrollen 06');       {Schleife einfacher aber auch}
  54. menuregister(2,7,'durchrollen 07');       {unübersichtlicher geworden.}
  55. menuregister(2,8,'durchrollen 08');
  56. menuregister(2,9,'durchrollen 09');
  57. menuregister(2,10,'durchrollen 10');
  58. menuregister(2,11,'durchrollen 11');
  59. menuregister(2,12,'durchrollen 12');
  60. menuregister(2,13,'durchrollen 13');
  61. menuregister(2,14,'durchrollen 14');
  62. menuregister(2,15,'durchrollen 15');
  63. menuregister(2,16,'durchrollen 16');
  64. end;
  65.  
  66. procedure make_menu_3;
  67. begin
  68. menuregister(3,0,'Komandos');             {Dieses Menü bietet die Befehle}
  69. menuregister(3,1,'Aktivier-Demo');        {des Demo-Programmes an.}
  70. menuregister(3,2,'Durchroll-Demo');
  71. menuregister(3,3,'Window-Demo');
  72. menuregister(3,4,'Random Lines');
  73. menuregister(3,5,'Info-Fenster');
  74. menuregister(3,6,'Demo beenden');
  75. end;
  76.  
  77. procedure make_menu_4;                    {Ein Menü ohne weitere Funktion}
  78. begin
  79. menuregister(4,0,'Infos');
  80. menuregister(4,1,'Mouse +  Buttons');
  81. menuregister(4,2,'Menüs +  Windows');
  82. menuregister(4,3,'      für       ');
  83. menuregister(4,4,'Turbo Pascal 5.X');
  84. menuregister(4,5,'      und       ');
  85. menuregister(4,6,'Turbo Pascal 6.X');
  86. menuregister(4,7,'     *****      ');
  87. menuregister(4,8,'   MBM-Paket    ');
  88. menuregister(4,9,'Version  4.1 (C)');
  89. menuregister(4,10,'1992 Uwe Kuhring');
  90. end;
  91.  
  92. procedure do_menu_1;
  93. var d1,d2,b : integer;                    {Verwaltung des 1. Menüs}
  94. begin                                     {Wenn ein Untermenü gewählt wurde}
  95. if y>0 then begin                         {(y>0) dann ent(markieren)}
  96.    if menu[1,y].menumark=0
  97.    then menumark(1,y,2)
  98.    else menumark(1,y,0);
  99.    repeat
  100.       mousestat (d1,d2,b);                {Holt den Zustand der Mausknöpfe}
  101.       until b=0;                          {solange, bis Maus losgelassen}
  102.    end;
  103. end;
  104.                                           {Das 2. Menü ist funktionslos}
  105.  
  106. procedure do_menu_3;                      {Verwaltung des 3. Menüs}
  107. var t,u,x1,y1,x2,y2 : integer;
  108.     s : string;
  109. begin
  110. menupush;
  111. case y of
  112.    1 : begin
  113.        menupull(1);                       {Alle Einträge im 1. Menü mark.}
  114.        for t:=1 to 16 do begin
  115.            if menu[1,t].menuexists then
  116.            if menu[1,t].menumark<>1 then menumark(1,t,2);
  117.            end;                           {Nur die, die auch zugänglich sind}
  118.        menupush;
  119.        end;
  120.    2 : begin
  121.        menupull(2);
  122.        for u:=0 to 7 do for t:=1 to 16 do menurevert(t,1);
  123.        menurevert(1,0);
  124.        menupush;                          {Alle Menüpunkte des 2. Menüs}
  125.        end;                               {acht mal durchrollen lassen}
  126.    3 : begin
  127.        for t:=1 to 5 do begin
  128.            open_window(t*10,t*3,t*10+20,t*4,t*3,t,wtmp[t],'Window-Demo');
  129.            str(t:1,s);
  130.            wprint(wtmp[t],1,0,t*3,'Fenster #'+s);
  131.            wprint(wtmp[t],1,1,t*3,'Hallo Welt!');
  132.            end;
  133.        delay(3000);
  134.        for t:=5 downto 1 do begin
  135.            close_window(wtmp[t]);
  136.            delay(500);
  137.            end;
  138.        for t:=0 to 4 do begin
  139.            for u:=0 to 7 do begin
  140.                wrevert(window,u);
  141.                delay(50);
  142.                wrevert(window,u);
  143.                end;
  144.            end;
  145.        open_window(20,10,60,12,11,1,wtmp[1],'Input-Window');
  146.        wprint(wtmp[1],1,0,14,'Bitte geben Sie Ihren Namen ein:');
  147.        winput(wtmp[1],1,1,14,name);
  148.        wprint(wtmp[1],1,2,14,'Herzlichen Dank '+name);
  149.        delay(2000);
  150.        close_window(wtmp[1]);
  151.        end;
  152.    4 : begin
  153.        mouseoff;    {sollte vor jedem Zeichnen in der Grafikebene erfolgen}
  154.        randomize;
  155.        open_window(30,10,50,20,11,4,wtmp[1],'Line-Window');
  156.        for t:=0 to 50 do begin
  157.            x1:=((getmaxx+1) div 80)*30+random(((getmaxx+1) div 80)*21);
  158.            x2:=((getmaxx+1) div 80)*30+random(((getmaxx+1) div 80)*21);
  159.            y1:=((getmaxy+1) div 25)*10+random(((getmaxy+1) div 25)*11);
  160.            y2:=((getmaxy+1) div 25)*10+random(((getmaxy+1) div 25)*11);
  161.            line (x1,y1,x2,y2);
  162.            end;                           {51 Zufallslinien zeichnen lassen}
  163.        mouseon;   {nicht vergessen!}
  164.        delay(3000);
  165.        close_window(wtmp[1]);
  166.        end;
  167.    5 : info_window('!','In solchen Info-Fenstern','können Mitteilungen schnell'
  168.                   ,'und einfach erteilt werden.');
  169.    6 : begin
  170.        ende:=true;                        {Programm beenden lassen durch}
  171.        clear_window(window);              {setzen der Ende Variablen}
  172.        wprint(window,1,0,12,'Auf Wiedersehen!');
  173.        wprint(window,1,1,1,'');           {Auch das funktioniert ab V3.1}
  174.        wprint(window,1,2,14,'Und einen schönen Tag noch,');
  175.        wprint(window,1,3,11,name+'.');
  176.        delay(3000);
  177.        close_window(window);
  178.        close_window(tableau);
  179.        delay(1000);
  180.        end;
  181.    end;                                  
  182. end;
  183.  
  184. procedure make_menu_colors;
  185. begin
  186. color_array[1,2]:=2;                      {Abwandeln der Default-Werte}
  187. color_array[2,2]:=13;                     {Default = 1,11,14,12 pro Eintrag}
  188. color_array[4,0]:=7;
  189. color_array[4,2]:=0;
  190. color_array[4,3]:=3;
  191. end;
  192.  
  193. {Menü-Demoprogramm Hauptteil}
  194.  
  195. begin
  196. ende:=false;
  197. enter_default_graphmode;             {Grafikmodus und Zeichensatz wählen}
  198. cleardevice;                         {Grafikbildschirm vollständig löschen}
  199. altwy:=-1;                           {Kein invertierter Eintrag im Window}
  200.  
  201. if vga_ega_card then begin
  202.    setfillstyle(1,3);                {Bildschirm-Muster mit Cyan-Color}
  203.    bar(0,0,getmaxx,getmaxy);         {füllen};
  204.    setcolor(10);
  205.    end;
  206.  
  207. for t:=1 to getmaxx div 30 do circle (t*20,getmaxy div 2,getmaxy div 40*t);
  208. outtextxy(0,getmaxy div 20,' Texte unter der Menüleiste bleiben erhalten.');
  209.                             {Kreise und einen Text in die Grafik eintragen}
  210. make_menu_1;
  211. make_menu_2;
  212. make_menu_3;                {Alle Menüpunkte definieren}
  213. make_menu_4;
  214.  
  215. if vga_ega_card then make_menu_colors;     {Eventuell Farben definieren}
  216.  
  217. mouseon;
  218. menuon;                     {Maus und Menü einschalten}
  219.  
  220. open_window(5,5,37,12,12,1,window,'Programm-Information');
  221. wprint(window,1,0,11,'Die Tastenkombinationen');
  222. wprint(window,1,1,12,'<ALT> <F1> bis <ALT> <F4>');
  223. wprint(window,1,2,11,'aktivieren die Menüpunkte.');
  224. wprint(window,1,3,14,'Die Cursortasten selektieren.');
  225. wprint(window,1,4,12,'<Return>');
  226. wprint(window,10,4,11,'aktiviert den Eintrag.');
  227. wprint(window,1,5,12,'<ESC>');
  228. wprint(window,7,5,11,'klappt das Menü hoch.');
  229. wprint(window,1,6,12,'<F1>');
  230. wprint(window,6,6,11,'öffnet ein Hilfsfenster.');
  231. wprint(window,1,7,15,'Eine Maus wird unterstützt.');
  232.  
  233. open_window(4,21,18,22,7,7,tableau,'');     {<= auch ein Fenster!}
  234. wprint(tableau,1,0,11,'Auch dies ist');
  235. wprint(tableau,1,1,14,'ein Fenster !');
  236.  
  237. name:='unbekannter Gast';
  238.  
  239. repeat
  240.    get_mychar(mychar);
  241.    if mychar=chr(27) then begin         {Hat der User <ESC> gedrückt ?}
  242.       if menupulled<>0 then menupush;   {Ja, dann Menü hochklappen}
  243.       mychar:=chr(255);                 {mychar "löschen"}
  244.       end;
  245.    if mychar=chr(59) then begin         {Wenn User <F1> für "Hilfe" drückt,}
  246.       open_window(20,10,60,13,10,1,wtmp[1],'Hilfe');       {Fenster auf und}
  247.       wprint(wtmp[1],1,0,14,'Sie haben <F1> gedrückt.');   {dann helfen}
  248.       wprint(wtmp[1],1,1,12,'Hier erscheint dann Ihr Hilfstext.');
  249.       wprint(wtmp[1],1,2,14,'Kontextbezogen durch Library-Variablen.');
  250.       wprint(wtmp[1],1,3,11,'Ein Tastendruck schließt diese Fenster.');
  251.       repeat until keypressed;
  252.       mychar:=readkey ; mychar:=chr(255);
  253.       close_window(wtmp[1]);
  254.       end;
  255.    menustat(x,y,b,mychar);              {Zustand von Maus/Menu erfragen}
  256.    if menupulled=0 then if x>0 then menupull(x);    {pullen falls nötig}
  257.    if menupulled<>x then begin
  258.       if x=0 then if menuleft then menupush;        {pushen falls die Maus}
  259.       if x<>0 then menupull(x);                     {das Menü verlassen hat}
  260.    end;
  261.    if x=0 then menurevert(1,0) else if y>0 then menurevert(y,1);
  262.    if b=1 then             {linker Mausknopf wurde gedrückt}
  263.       case x of
  264.          0 : ;             {Maus ist über keiner Menüsspalte}
  265.          1 : Do_Menu_1;    {Maus ist über 1. Menü}
  266.          2 : menupush;     {Maus ist über 2. Menü, das hat keine Funktion}
  267.          3 : Do_Menu_3;    {Maus ist über 3. Menü, Komandomenü aufrufen}
  268.          4 : menupush;     {4. Menü hat wieder keine Funktion}
  269.          end;
  270.    if menupulled=0 then begin
  271.       window_stat(window,y,b,mychar);
  272.       if y<>altwy then if y>-1 then begin
  273.          wrevert(window,altwy);
  274.          altwy:=y;
  275.          wrevert(window,altwy);
  276.          end;
  277.       if b=1 then if not ende then begin
  278.          wrevert(window,altwy);
  279.          delay (10);
  280.          wrevert(window,altwy);
  281.          end;
  282.       end;
  283.    until ende;
  284.  
  285. menuoff;
  286. mouseoff;               {Maus und Menü ausschalten);
  287. cleardevice;            {Abschließendes Löschen des Grafikbildschirmes}
  288.  
  289. closegraph;             {Grafikmodus wieder verlassen};
  290.  
  291. end.